package com.template.templateuser.domain.web;

import com.template.templateuser.domain.dto.SysDeptDTO;
import com.template.templateuser.domain.service.SysDeptService;
import com.template.templateuser.domain.util.PageInfo;
import com.template.templateuser.domain.web.param.FindSysDeptListParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sys-dept")
@Api(tags = "部门Api")
public class SysDeptController {

    @Autowired
    private SysDeptService sysDeptService;

    /**
     * 得到部门列表 可根据名称筛选
     * @param findSysDeptListParam
     * @return
     */
    @PostMapping("/list")
    @ApiOperation("得到部门列表 可根据名称筛选")
    public PageInfo<SysDeptDTO> getSysDeptList(@RequestBody FindSysDeptListParam findSysDeptListParam){
        return sysDeptService.getSysDeptList(findSysDeptListParam);
    }


    /**
     * 得到部门树结构
     * @param
     * @return
     */
    @GetMapping("/list/tree")
    @ApiOperation("得到部门树结构")
    public List<SysDeptDTO> getSysDeptListTree(){
        return sysDeptService.getSysDeptListTree();
    }


    /**
     * 根据父id得到下级部门
     * @param
     * @return
     */
    @PostMapping("/list/tree/{parentId}")
    @ApiOperation("根据父id得到下级部门")
    public List<SysDeptDTO> getSysDeptListByParentId(@PathVariable("parentId") Long parentId){
        return sysDeptService.getSysDeptListByParentId(parentId);
    }




    /**
     * 保存部门信息
     * @param sysDeptDTO
     * @returns
     */
    @PostMapping("/save")
    @ApiOperation("保存部门信息")
    public int saveSysDept(@RequestBody SysDeptDTO sysDeptDTO){
        return sysDeptService.saveSysDept(sysDeptDTO);
    }

    /**
     * 更新部门信息
     * @param sysDeptDTO
     * @param id
     * @returns
     */
    @PostMapping("/update/{id}")
    @ApiOperation("更新部门信息")
    public int updateSysDept(@PathVariable("id") Long  id, @RequestBody SysDeptDTO sysDeptDTO){
        return sysDeptService.updateSysDept(id,sysDeptDTO);
    }
    /**
     * 查看部门信息
     * @returns
     */
    @GetMapping("/query/{id}")
    @ApiOperation("查看部门信息")
    public SysDeptDTO querySysDept(@PathVariable("id") Long  id){
        return sysDeptService.querySysDept(id);
    }

    /**
     * 删除部门信息
     * @returns
     */
    @DeleteMapping("/delete/{id}")
    @ApiOperation("删除部门信息")
    public int deleteSysDept(@PathVariable("id") Long  id){
        return sysDeptService.deleteSysDept(id);
    }
}
